/**
 *
 */
/**
 * @author Administrator
 *
 */




import java.nio.*;

public class CBufferDemo1 {
	public static void main(String[] args){
		ByteBuffer buffer = ByteBuffer.allocate(1024);    //创建缓冲区对象为1kb
		buffer.put("abc".getBytes()); //传递数据给缓冲区



//		buffer.limit(buffer.position());
//		buffer.position(0);
		//buffer.flip();  //作用等于前两行代码

		buffer.clear();

		buffer.put("xy".getBytes());
		buffer.flip();
		//while (buffer.position() < buffer.limit()){    //老的写法
		while(buffer.hasRemaining()){      //hasRemaining 表示是否有数据
			byte b = buffer.get();      //获取缓冲区到b对象
			System.out.println(b);
		}


//		buffer.rewind();   //代表posation = 0
//
//		byte b = buffer.get();
//		System.out.println(b);

//		ByteBuffer buffer2 = ByteBuffer.allocate(1024);
//		buffer2.put("xyz".getBytes());
		/*
		 * 新建一个缓冲区浪费性能，所以一般可以的话最好重复利用,清空缓冲区，即：
		 * buffer.clear();
		 * 这时 position设置为0 limit设置为容量 并丢弃标记(也就是说其实数据并没有真正清空..只是下次写的时候覆盖调)
		 * 这样做的好处是效率高，真正删数据太慢了
		 */
		//	buffer.mark(1); //表示在下标为1的地方做个标记
		//	buffer.reset(); //表示回到mark的位置

	}
}

